﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Zune2LyncNP.src
{
    public sealed class LogDeCanciones : INotifyPropertyChanged
    {
        private LogDeCanciones() { LogCanciones = new ObservableCollection<Cancion>(); }
        private static LogDeCanciones _instancia = new LogDeCanciones();
        public static LogDeCanciones ObtenerInstancia { get { return _instancia; } }
        
        public String CancionActual
        {
            get
            {
                return LogCanciones.FirstOrDefault().ToString();
            }
        }
        public ObservableCollection<Cancion> LogCanciones;
        public void Agregar(Cancion cancion)
        {
            if (LogCanciones.Count() > 0)
            {
                if (cancion.Nombre != LogCanciones.FirstOrDefault().Nombre && cancion.Artista != LogCanciones.FirstOrDefault().Artista &&
                    cancion.Album != LogCanciones.FirstOrDefault().Album)
                {
                    LogCanciones.Insert(0, cancion);
                    OnPropertyChanged("CancionActual");
                }
            }
            else
            {
                LogCanciones.Insert(0, cancion);
                OnPropertyChanged("CancionActual");
            }
        }

        //varas de eventos
        public event PropertyChangedEventHandler PropertyChanged;
        private void OnPropertyChanged(string info)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(info));
            }
        }
    }
}
